1. Field of the Invention
The invention relates generally to the field of computer science and specifically to the field of software development and testing.
2. Background Art
As object-oriented software development becomes more complex, so does the ability to efficiently test software applications. It is estimated that more than 70% of the budgets of software development projects are allocated to testing, debugging, and maintaining the software and only 30% to the costs associated with design and coding. One of the problems encountered by software developers and testers involved in complex software projects is the insufficiency of documentation that conveys Requirements specifications. “Requirements” are the details describing the externally perceived functionality and properties of the application. Requirements should be clear, complete, reasonably detailed, cohesive, attainable, and most preferably “testable.” A non-testable requirement would be, for example, the notion that the application is ‘user-friendly,’ which is subjective rather than objectively testable through end-user interaction with the application. A testable requirement, for example, would be one in which “the user must enter their previously-assigned password to access the application.”
Determining and organizing Requirements details usefully and efficiently is complex. Several books are available that suggest various approaches to this task (See Robertson, S., et al., Mastering the Requirements Process, Addison-Wesley Pub Co (2000), and see Weigersm K. et al., Software Requirements, Microsoft Press (1999)).
The Requirements of all potential end users should be considered when generating a comprehensive strategy for testing the software application. Users can be, for example, end-users, customer acceptance testers, customer contract officers, customer management, future software maintenance engineers, sales-people, or anyone who could later “derail” the project if their expectations are not met. In some organizations, requirements may end up in high-level project plans, functional specification documents, in design documents, or in other documents at various levels of detail.
Additionally, current software testing methodologies are encumbered by difficulties associated with learning automation tools (e.g., WinRunner available from the Mercury Interactive Corporation, SilkTest available from Segue Software Inc., or Rational Robot available from the Rational Software Corporation), the scripting languages used by automation tools.
Some attempt has been made to integrate both requirements organization and testing. The SilkTest automation tool, for example, comes integrated with “SilkPlan Pro,” an application for creating a test plan and then linking the automation scripts to the test plan. “SilkPlan Pro” can also be used to track the automation process and control the execution of selected groups of test cases. One or more user defined attributes are assigned to each “test case” and later used in test plan queries to select a group of tests for execution. A test case is a file or document that describes an input, action, or event and an expected response, to determine if a feature of an application is working per the Requirements. A test case preferably contains the particulars, e.g., test case identifier, test case name, objective, test conditions/setup, input data requirements, steps, and expected results. There is also a modest capability to add manual test placeholders in the test plan, and then manually add pass/fail status to the results of a full test run.
The automation tool WinRunner integrates a web enabled program called “TestDirector;” for visually creating a test project and then linking WinRunner scripts to the project. “TestDirector” is a database repository based application that provides a variety of tools to analyze and manipulate the various database tables and test results stored in the repository for the project. Using a visual recorder, test cases are added to one or more Test Sets for execution as a group. TestDirector also provides user with the means for authoring manual test cases (e.g., describing each test step and its expected results), interactively executing each manual test, and then saving the pass/fail status for each test step in the repository.
Commercially available automation tools include only rudimentary management and authoring features limited to isolated machines containing the automation tool and the software being tested. Software testing, however, is a team effort that requires symbiotic cooperation between the various software testers who need not be software developers themselves. Also, software testers need not be limited geographically to conduct the software testing.
As such the present invention provides a unified multi-user platform that manages testing requirements, assigning test cases for execution, and includes a graphical user interface (GUI) driven test case authoring tool that appends test steps using syntax recognized by the automation tool chosen to perform the test.